package pl.elka.pszt.model;

import java.io.File;

import pl.elka.pszt.model.argument.ArgumentHelper;
import pl.elka.pszt.model.literal.LiteralHelper;
import pl.elka.pszt.model.parser.FileLineReader.LineParser;
import pl.elka.pszt.model.parser.FileLineReader;
import pl.elka.pszt.model.parser.Parser;

/**
 * Pomocnicza klasa do ladowania wiedzy z pliku podanego jako file lub nazwa w
 * resources.
 * 
 * @author Andrzej Makarewicz
 * 
 */
public class KnowledgeLoader implements LineParser {
	private final Knowledge knowledge;
	private final LiteralHelper literalHelper;
	private final ArgumentHelper argumentHelper;
	
	public KnowledgeLoader(Knowledge knowledge, LiteralHelper literalHelper, ArgumentHelper argumentHelper) {
		this.knowledge = knowledge;
		this.literalHelper = literalHelper;
		this.argumentHelper = argumentHelper;
	}
	
	@Override
	public void parseLine(String line) {
		KnowledgeElement element = Parser.parseKnowledgeElement(line, argumentHelper, literalHelper);
		if (element != null) knowledge.addElement(element);
	}
	
	public boolean loadFromResource(String fileName) {
		return FileLineReader.readFromResource(fileName, this);
	}
	
	public boolean loadFromFile(File file) {
		return FileLineReader.readFile(file, this);
	}
}
